В этом шаге мы создадим свою панель инструментов и поместим туда нашу кнопку. Это полезно, если вы хотите вынести на панель специфические действия Вашей программы, которые на стандартной панели как то не к месту.
Создаем приложение TestMyTools, как SDI и после выбора SDI сразу Finish. Нормально и быстро. Переходим в ResourceView там нам нужен Toolbar. Щелкаем правой кнопкой мыши и выбираем пункт Insert Toolbar.

Дальше как в тот раз рисуем круг и присваиваем идентификатор IDC_CURCLE. Панель есть теперь надо её вывести на экран.
Создаются панели инструментов в функции OnCreate класса CMainFrame. Только перед этим нам необходимо завести класс панели интсрументов. Один у нас есть он был сгенерирован App Wizard, а второй мы добавим.
class CMainFrame : public CFrameWnd
{
.....
CToolBar m_wndToolBar; // было
CToolBar m_wndToolBar1; // добавили
....
};
Теперь нам нужно повторить инииализацию в OnCreate только
использовать идентификатор нашей панели и наш класс. Жирным дополнения int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CFrameWnd::OnCreate(lpCreateStruct) == -1)
return -1;
if (!m_wndToolBar.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar.LoadToolBar(IDR_MAINFRAME))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndToolBar1.CreateEx(this, TBSTYLE_FLAT, WS_CHILD | WS_VISIBLE | CBRS_TOP
| CBRS_GRIPPER | CBRS_TOOLTIPS | CBRS_FLYBY | CBRS_SIZE_DYNAMIC) ||
!m_wndToolBar1.LoadToolBar(IDR_TOOLBAR1))
{
TRACE0("Failed to create toolbar\n");
return -1; // fail to create
}
if (!m_wndStatusBar.Create(this) ||
!m_wndStatusBar.SetIndicators(indicators,
sizeof(indicators)/sizeof(UINT)))
{
TRACE0("Failed to create status bar\n");
return -1; // fail to create
}
// TODO: Delete these three lines if you don't want the toolbar to
// be dockable
m_wndToolBar.EnableDocking(CBRS_ALIGN_ANY);
m_wndToolBar1.EnableDocking(CBRS_ALIGN_ANY);
EnableDocking(CBRS_ALIGN_ANY);
DockControlBar(&m_wndToolBar);
DockControlBar(&m_wndToolBar1);
return 0;
}
И как в прошлом примере реакцию на нажатие на диалоговой панели. /////////////////////////////////////////////////////////////////////////////
// CTestMyToolsView message handlers
void CTestMyToolsView::OnCurcle()
{
CDC* pDC;
pDC=GetDC();
pDC->Ellipse(CRect(10,10,100,100));
}
Мы с Вами получили настоящую диалоговую панель. Эту панель можно таскать и
прислонять к стенкам. Все можно кроме как убирать с экрана. :-))))
